//package com.heng.application.joystick
//
//import android.annotation.SuppressLint
//import android.content.Context
//import android.content.SharedPreferences
//import android.graphics.PixelFormat
//import android.preference.PreferenceManager
//import android.util.AttributeSet
//import android.view.Gravity
//import android.view.LayoutInflater
//import android.view.MotionEvent
//import android.view.View
//import android.view.WindowManager
//import android.widget.ImageButton
//
///**
// * @Author    : zhangheng227
// * date       : 2025/5/26
// */
//class JoyStick : View {
//    private val mContext: Context
//    private var mWindowParamCurrent: WindowManager.LayoutParams? = null
//    private var mWindowManager: WindowManager? = null
//    private val mCurWin = WINDOW_TYPE_JOYSTICK
//    private val inflater: LayoutInflater?
//    private var mListener: JoyStickClickListener? = null
//
//    // 移动
//    private var mJoystickLayout: View? = null
//    private val sharedPreferences: SharedPreferences
//
//    /* 历史记录悬浮窗相关 */
//    constructor(context: Context) : super(context) {
//        mContext = context
//        sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext)
//        initWindowManager()
//        inflater = LayoutInflater.from(mContext)
//        if (inflater != null) {
//            initJoyStickView()
//        }
//    }
//
//    constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
//        context,
//        attrs,
//        defStyleAttr
//    ) {
//        mContext = context
//        sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext)
//        initWindowManager()
//        inflater = LayoutInflater.from(mContext)
//        if (inflater != null) {
//            initJoyStickView()
//        }
//    }
//
//    constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
//        mContext = context
//        sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext)
//        initWindowManager()
//        inflater = LayoutInflater.from(mContext)
//        if (inflater != null) {
//            initJoyStickView()
//        }
//    }
//
//    fun setCurrentPosition(lng: Double, lat: Double, alt: Double) {
////        double[] lngLat = MapUtils.wgs2bd09(lng, lat);
////        mCurMapLngLat = new LatLng(lngLat[1], lngLat[0]);
////        mAltitude = alt;
//
////        resetBaiduMap();
//    }
//
//    fun show() {
//        when (mCurWin) {
//            WINDOW_TYPE_JOYSTICK -> if (mJoystickLayout!!.parent == null) {
//                mWindowManager!!.addView(mJoystickLayout, mWindowParamCurrent)
//            }
//        }
//    }
//
//    fun hide() {
//        if (mJoystickLayout!!.parent != null) {
//            mWindowManager!!.removeViewImmediate(mJoystickLayout)
//        }
//    }
//
//    fun destroy() {
//        if (mJoystickLayout!!.parent != null) {
//            mWindowManager!!.removeViewImmediate(mJoystickLayout)
//        }
//    }
//
//    fun setListener(mListener: JoyStickClickListener?) {
//        this.mListener = mListener
//    }
//
//    private fun initWindowManager() {
//        mWindowManager = mContext.getSystemService(Context.WINDOW_SERVICE) as WindowManager
//        mWindowParamCurrent = WindowManager.LayoutParams()
//        mWindowParamCurrent!!.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
//        mWindowParamCurrent!!.format = PixelFormat.RGBA_8888
//        mWindowParamCurrent!!.flags =
//            (WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE // 不添加这个将导致游戏无法启动（MIUI12）,添加之后导致键盘无法显示
//                    or WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
//                    or WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN)
//        mWindowParamCurrent!!.gravity = Gravity.START or Gravity.TOP
//        mWindowParamCurrent!!.width = WindowManager.LayoutParams.WRAP_CONTENT
//        mWindowParamCurrent!!.height = WindowManager.LayoutParams.WRAP_CONTENT
//        mWindowParamCurrent!!.x = 300
//        mWindowParamCurrent!!.y = 300
//    }
//
//    @SuppressLint("InflateParams")
//    private fun initJoyStickView() {
//        mJoystickLayout = inflater.inflate(R.layout.joystick, null)
//
//        /* 整个摇杆拖动事件处理 */mJoystickLayout!!.setOnTouchListener(JoyStickOnTouchListener())
//
//        /* 位置按钮点击事件处理 */
//        val btnPosition = mJoystickLayout!!.findViewById<ImageButton>(R.id.joystick_position)
//        btnPosition.setOnClickListener { v: View? -> }
//
//
//        /* 方向键点击处理 */
//        val rckView: RockerView = mJoystickLayout!!.findViewById(R.id.joystick_rocker)
//
//        /* 方向键点击处理 */
//        val btnView: ButtonView = mJoystickLayout!!.findViewById(R.id.joystick_button)
//
//        /* 这里用来决定摇杆类型 */if (sharedPreferences.getString(
//                "setting_joystick_type",
//                "0"
//            ) == "0"
//        ) {
//            rckView.setVisibility(VISIBLE)
//            btnView.setVisibility(GONE)
//        } else {
//            rckView.setVisibility(GONE)
//            btnView.setVisibility(VISIBLE)
//        }
//    }
//
//    private inner class JoyStickOnTouchListener : OnTouchListener {
//        private var x = 0
//        private var y = 0
//        override fun onTouch(view: View, event: MotionEvent): Boolean {
//            when (event.action) {
//                MotionEvent.ACTION_DOWN -> {
//                    x = event.rawX.toInt()
//                    y = event.rawY.toInt()
//                }
//
//                MotionEvent.ACTION_MOVE -> {
//                    val nowX = event.rawX.toInt()
//                    val nowY = event.rawY.toInt()
//                    val movedX = nowX - x
//                    val movedY = nowY - y
//                    x = nowX
//                    y = nowY
//                    mWindowParamCurrent!!.x += movedX
//                    mWindowParamCurrent!!.y += movedY
//                    mWindowManager!!.updateViewLayout(view, mWindowParamCurrent)
//                }
//
//                MotionEvent.ACTION_UP -> view.performClick()
//                else -> {}
//            }
//            return false
//        }
//    }
//
//    interface JoyStickClickListener {
//        fun onMoveInfo(speed: Double, disLng: Double, disLat: Double, angle: Double)
//        fun onPositionInfo(lng: Double, lat: Double, alt: Double)
//    }
//
//    companion object {
//        private const val WINDOW_TYPE_JOYSTICK = 0
//    }
//}